欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

關于C++結構體的函數調用

在一段利(沒)用(事)鏈(找)表(事)來實現正整數相加的程序中,有一個函數是這樣的,實現了將位數較小的鏈表最高位加到位數較大的鏈表上的功能。

void addMostDigit(List addee, List adder){//addee的位數不小于adder
? ? int index = addee.size() - adder.size();
? ? int sum = addee.get(index)->digit + adder.header->digit;
? ? adder.header = adder.header->next;
?
? ? if (sum < 10)
? ? {
? ? ? ? addee.get(index)->digit = sum;
? ? ? ? return;
? ? }
?
? ? while (sum >= 10){
? ? ? ? addee.get(index)->digit = sum % 10;
?
? ? ? ? if (index == 0)//需要變動最高位
? ? ? ? {
? ? ? ? ? ? Node* newHead = new Node('1');
? ? ? ? ? ? newHead->next = addee.header;
? ? ? ? ? ? addee.header = newHead;
? ? ? ? ? ? break;
? ? ? ? }
?
? ? ? ? sum = addee.get(--index)->digit + sum / 10;
? ? ? ? if (sum < 10)
? ? ? ? {
? ? ? ? ? ? addee.get(index)->digit = sum;
? ? ? ? ? ? break;
? ? ? ? }
? ? }
}

錯誤是很簡單的,此處傳遞的List應該是List*,而非List;這一點相信在交換兩個整數值的函數中就已明確。我犯錯的原因,大概是不知不覺間又用了java的思維——一切都是引用變量。

?

解決方案很簡單,該用地址傳遞即可。

void addMostDigit(List* addee, List* adder){
? ? int index = addee->size() - adder->size();
? ? int sum = addee->get(index)->digit + adder->header->digit;
? ? adder->header = adder->header->next;
? ??
? ? if (sum < 10)
? ? {
? ? ? ? addee->get(index)->digit = sum;
? ? ? ? return;
? ? }
? ??
? ? while (sum >= 10){
? ? ? ? addee->get(index)->digit = sum % 10;
? ? ? ??
? ? ? ? if (index == 0)
? ? ? ? {
? ? ? ? ? ? Node* newHead = new Node('1');
? ? ? ? ? ? newHead->next = addee->header;
? ? ? ? ? ? addee->header = newHead;
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ??
? ? ? ? sum = addee->get(--index)->digit + sum / 10;
? ? ? ? if (sum < 10)
? ? ? ? {
? ? ? ? ? ? addee->get(index)->digit = sum;
? ? ? ? ? ? break;
? ? ? ? }
? ? }
}

從這個角度講,java的原點運算符實際上等價于C++的->,而java編程時的規則,不過是C++可遵守的諸多規則之一而已。

換而言之,在棧幀的調用時,準備的入口參數中,真的包含了List這個struct的實體。那么,如果struct很大的話,這樣的函數調用豈不是花費巨大?如果這樣,那么全部用指針或引用(引用更安全一些),或許會是一種很好的編程方法。

文章鏈接: http://www.qzkangyuan.com/21884.html

文章標題:關于C++結構體的函數調用

文章版權:夢飛科技所發布的內容,部分為原創文章,轉載請注明來源,網絡轉載文章如有侵權請聯系我們!

聲明:本站所有文章,如無特殊說明或標注,均為本站原創發布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
建站教程

C++調用結構體函數

2023-7-7 14:03:35

建站教程

c++ c#結構體調用

2023-7-7 14:39:48

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 绥江县| 瑞昌市| 莱西市| 繁峙县| 普定县| 同心县| 荔波县| 申扎县| 西平县| 巨鹿县| 安多县| 通州市| 贺兰县| 广丰县| 佛教| 云霄县| 土默特右旗| 肥乡县| 林州市| 揭西县| 那曲县| 剑川县| 黔东| 读书| 泊头市| 微山县| 蓝山县| 汉中市| 仁布县| 余庆县| 封丘县| 海伦市| 滦南县| 白沙| 晋宁县| 丰县| 马公市| 儋州市| 老河口市| 彩票| 确山县|